home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO027A.dsk / DUMP80.SOURCE.txt < prev    next >
Text File  |  2012-02-16  |  2KB  |  121 lines

  1.  SKP 2
  2.  DAT
  3.  SKP 2
  4. ********************************
  5. *                              *
  6. *    80-COLUMN SCREEN DUMP     *
  7. *                              *
  8. ********************************
  9.  SKP 2
  10. A1 = $3C
  11. A2 = $3E
  12. A3 = $40
  13. DSPBUF = $280
  14. SCREEN = $8B33
  15. VECTOUT = $BE30
  16. VIDDOS = $B7F1
  17. ON80 = $C055
  18. OFF80 = $C054
  19. SLOT1 = $C100
  20. COUT1 = $FDF0
  21. COUT = $FDED
  22. CROUT = $FD8E
  23.  skp 3
  24.  ORG $300
  25. DUMP JSR PRON ;Turn on Printer in slot 1
  26.  LDX #$FF ;Initialize Line Index
  27.  STX A1
  28. :L1 INC A1
  29.  LDX A1
  30.  CPX #24 ;Finished?
  31.  BCS :P ;Yes, skip to end
  32.  LDA INDEX,X ;Get Start of line
  33.  STA A2 ;into Zero-page pointer.
  34.  LDA INDEX+24,X
  35.  STA A2+1
  36.  LDY #0 ;Initialize character pointer.
  37.  LDX #0 ;Init Buffer pointer.
  38. :L STA ON80 ;Turn on AuxMem
  39. :L3 LDA (A2),Y ;Get Even Character
  40.  JSR FILTER ;Make it Text
  41.  STA DSPBUF,X ;Put into Buffer
  42.  INX ;Increment for next character
  43.  STA OFF80 ;Turn off AuxMem
  44.  TXA ;See if Even character
  45.  LSR ;just read.
  46.  BCS :L3 ;Yes, go back for Odd Character
  47.  INY ;Increment for next character
  48.  CPY #40 ;Done with line?
  49.  BNE :L ;No, get another character
  50.  JSR BUFOUT ;Yes, print the line.
  51.  JSR CROUT ;Cap it with a C/R
  52.  BNE :L1 ;Go back for more
  53. :P LDX #5
  54. :L2 JSR CROUT
  55.  DEX
  56.  BPL :L2
  57.  JSR PROFF ;Turn off printer
  58.  RTS ;Done!
  59.  SKP 3
  60. * Turn on Printing in slot 1
  61.  SKP 2
  62. PRON LDA #<SLOT1 ;Put Slot 1 Address
  63.  STA VECTOUT ;in ProDOS output vector
  64.  LDA #>SLOT1
  65.  STA VECTOUT+1
  66.  LDX #0
  67. :L INX
  68.  LDA INIT,X
  69.  JSR COUT
  70.  CPX INIT
  71.  BCC :L
  72.  RTS
  73.  SKP 3
  74. * Direct output to screen
  75.  SKP 2
  76. PROFF LDA #<COUT1 ;Put normal output address
  77.  STA VECTOUT ;into ProDOS output vector
  78.  LDA #>COUT1
  79.  STA VECTOUT+1
  80.  RTS
  81.  SKP 3
  82. * Condition output characters
  83.  SKP 2
  84. FILTER CMP #$80 ;If High bit set, handle below
  85.  BCS :P2
  86.  CMP #$40 ;If Mousetext
  87.  BCC :P1 ;($40<=x<$60)
  88.  CMP #$60
  89.  BCS :P1
  90.  LDA #$20 ;make it a space
  91. :P1 CMP #$20 ;If Uppercase Inverse
  92.  BCS :P ;(X<$20)
  93.  ORA #$40 ;Make normal
  94. :P ORA #$80 ;and set High Bit
  95. :P2 CMP #$A0 ;If control character,
  96.  BCS :P3 ;Make it a space
  97.  LDA #$A0
  98. :P3 RTS
  99.  SKP 3
  100. * Dump 80 character line to printer
  101.  SKP 2
  102. BUFOUT LDX #0 ;Init Pointer
  103. :L LDA DSPBUF,X ;Get Character
  104.  JSR COUT ;Spit it out
  105.  INX ;Increment for next
  106.  CPX #80 ;If 80 characters, done!
  107.  BCC :L
  108.  RTS
  109.  SKP 3
  110. * Table of Line Addresses
  111.  SKP 2
  112. INDEX DFB $00,$80,$00,$80,$00,$80,$00,$80,$28,$A8,$28,$A8
  113.  DFB $28,$A8,$28,$A8,$50,$D0,$50,$D0,$50,$D0,$50,$D0
  114.  DFB 4,4,5,5,6,6,7,7,4,4,5,5,6,6,7,7,4,4,5,5,6,6,7,7
  115.  SKP 3
  116. * Initialization String
  117.  SKP 2
  118. INIT DFB 4
  119.  ASC "    0N"
  120.  DFB $8D
  121.